package com.tdam2011.grupo04.SMSWeb;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Timer;
import java.util.TimerTask;

import com.tdam2011.grupo04.R;
import com.tdam2011.grupo04.Sql;
import com.tdam2011.grupo04.entidades.Mensaje;

import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.IBinder;

public class ConsultaMensajeService extends Service{
	    private Timer timer;
	    
	    private String usuario;
		private String contrasenia;
	 
		public static NotificationManager mNotificationManager;
		
	    @Override
	    public IBinder onBind(Intent intent) {
	        return null;
	    }
	 
	    @Override
	    public void onCreate(){
	        super.onCreate();
	        timer = new Timer();
	    }
	 
	    @Override
	    public void onStart(final Intent intent, final int startId){
	        super.onStart(intent, startId);
	        timer.scheduleAtFixedRate(new TimerTask() {
	            @Override
	            public void run() {  
	            	
	            	ConsultaMensajeHandler handler= consultarMensajes();
	            	if(handler != null && handler.getIsOK()){ 
	            		List<Mensaje> listaMensajes= handler.getMensajes();
	            		
	            		int nroMensaje= 0;
	            		if(listaMensajes != null)
		            		for(Mensaje mensaje : listaMensajes)
			            		notificarMensaje(mensaje.getNombreContacto(), mensaje.getCuerpoMensaje(), nroMensaje++);
					}
	            }
	        }, 0, 180000);
	    }
	    
	    private ConsultaMensajeHandler consultarMensajes(){
			SharedPreferences app_preferences = getSharedPreferences("usuarioRegistrado", MODE_PRIVATE); 
	        usuario= app_preferences.getString("usuario", "user");
	        contrasenia= app_preferences.getString("contrasenia", "pass");
	             
	        Handler handler= null;
	        
			try{
				ComunicacionServer cs= new ComunicacionServer(usuario, contrasenia);
				
				String fecha= getFecha();
				String xml= cs.getXML(ComunicacionServer.COM_CONSULTAR, null, null, fecha);
				setFecha();
				
				if(cs.parsear(xml, ComunicacionServer.COM_CONSULTAR)) 
					handler= cs.getHandler();
			}catch (Exception e){ e.printStackTrace(); }
			
			return (ConsultaMensajeHandler) handler;
		}
	    
	    private void notificarMensaje(String user, String mensaje, int nroMensaje){
	    	String ns = Context.NOTIFICATION_SERVICE;
    	    mNotificationManager = (NotificationManager) getSystemService(ns);
    	    
    		int icon = R.drawable.ic_tab_web;   
    		CharSequence tickerText = "Mensaje nuevo de " + user; 
    		long when = System.currentTimeMillis(); 
    		
    		Context context = getApplicationContext();
    		CharSequence contentTitle = user; 
    		CharSequence contentText = mensaje;

    		Intent notificationIntent = new Intent(ConsultaMensajeService.this, MensajeWeb.class);
    		notificationIntent.putExtra("usuario", user);
    		notificationIntent.putExtra("esNotification", true);
    		notificationIntent.putExtra("nroMensaje", nroMensaje);
    		PendingIntent contentIntent = PendingIntent.getActivity(ConsultaMensajeService.this, 0, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);

    		Notification notification = new Notification(icon, tickerText, when);
    		notification.flags |= Notification.FLAG_AUTO_CANCEL;
    		notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);
    		
    		agregarMensaje(user, mensaje);
    		
    		mNotificationManager.notify(nroMensaje, notification);
	    }
	    
	    private String getFecha(){    	
	    	SharedPreferences app_preferences_fecha = getSharedPreferences("usuarioRegistrado", MODE_PRIVATE); 
	        return app_preferences_fecha.getString("fecha", "error");
	    }
	    
	    private void setFecha(){
	    	Date fecha= new Date();	
	        SimpleDateFormat formatoFecha= new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
	    	
	    	SharedPreferences app_preferences_fecha = getSharedPreferences("usuarioRegistrado", MODE_PRIVATE); 
	        SharedPreferences.Editor editor = app_preferences_fecha.edit();
	        editor.putString("fecha", formatoFecha.format(fecha));
	        editor.commit();
	    }
	    
	    private void agregarMensaje(String usuarioRemitente, String msj){
	    	com.tdam2011.grupo04.entidades.Mensaje mensaje= new Mensaje();
        	mensaje.setLabelContacto(usuarioRemitente);
        	mensaje.setNombreContacto(usuarioRemitente);
        	mensaje.setCuerpoMensaje(msj);
        	
        	Sql sql= new Sql(this);
        	sql.addMensajeWeb(usuario, mensaje, MensajeWeb.MENSAJE_RECIBIDO);
	    }
}
